package org.ruoyi.chat.util;

import org.ruoyi.chat.domain.TaskResult;
import org.ruoyi.common.redis.utils.RedisUtils;
import org.springframework.stereotype.Component;

import java.time.Duration;

@Component
public class RedisTaskUtil {
    // Redis键前缀（避免键冲突）
    private static final String TASK_KEY_PREFIX = "image:blend:task:";

    /**
     * 保存任务结果到Redis
     * @param taskId 任务ID
     * @param taskResult 任务结果对象
     * @param expireSeconds 过期时间（秒），避免Redis内存溢出
     */
    public void saveTaskResult(String taskId, TaskResult taskResult, long expireSeconds) {
        String key = TASK_KEY_PREFIX + taskId;
        RedisUtils.setCacheObject(key, taskResult, Duration.ofSeconds(expireSeconds));
    }

    /**
     * 从Redis获取任务结果
     * @param taskId 任务ID
     * @return 任务结果（null表示不存在）
     */
    public TaskResult getTaskResult(String taskId) {
        String key = TASK_KEY_PREFIX + taskId;
        return (TaskResult) RedisUtils.getCacheObject(key);
    }

    /**
     * 删除过期任务（可选）
     */
    public void deleteTask(String taskId) {
        String key = TASK_KEY_PREFIX + taskId;
        RedisUtils.deleteObject(key);
    }
}
